#ifndef __INCosa_semh
#define __INCosa_semh

#include "osa_common.h"
#include <semaphore.h>

typedef enum
{
	SEM_EMPTY,
	SEM_FULL
}SEM_B_STATE;

/* semaphore options */
#define SEM_Q_FIFO			0x00
#define SEM_Q_PRIORITY		0x01

#ifdef __cplusplus
extern "C" {
#endif

typedef sem_t* SEM_ID;

ESE_API SEM_ID semMCreate(int options);
ESE_API SEM_ID semBCreate(int options, SEM_B_STATE initialState);
ESE_API SEM_ID semCCreate(int options, int inititalCount);
ESE_API STATUS semTake(SEM_ID semId, int timeout);
ESE_API STATUS semGive(SEM_ID semId);
ESE_API STATUS semDelete(SEM_ID semId);


#ifdef __cplusplus
}
#endif

#endif
